public class Solution {
    public int maxSubArray(int[] nums) {
        int max = nums[0];
        for (int i = 0; i < nums.length; i++) {
            int tmpMax = nums[i];
            int sum = tmpMax;
            for (int j = i + 1; j < nums.length; j++) {
                sum += nums[j];
                if (tmpMax < sum) {
                    tmpMax = sum;
                }
            }
            max = Math.max(max, tmpMax);
        }
        return max;
    }

    public int maxSubArray2(int[] nums) {
        int max = nums[0];
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum += nums[i];
            if (sum > max) {
                max = sum;
            }

            if (sum <= 0) {
                sum = 0;// 跳过当前值，从下一个值开始计算
            }
        }
        return max;
    }
}